package algorithm.other;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * LRU是Least Recently Used的缩写，即最近最少使用，是一种常用的页面置换算法
 * 选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段
 * 用来记录一个页面自上次被访问以来所经历的时间 t，当须淘汰一个页面时
 * 选择现有页面中其 t 值最大的，即最近最少使用的页面予以淘汰。
 */
public class LRU {

    final static int maxSize = 10;
    static Map<String,Object> cache = new LinkedHashMap<String,Object> (16,0.75f,true) {
        @Override
        protected boolean removeEldestEntry(Map.Entry<String,Object> eldest) {
            return size() > maxSize;
        }
    };

    public static void main(String[] args) {

        cache.put("1",1);
        cache.put("2",2);
        cache.put("3",3);
        cache.put("4",4);
        cache.put("5",5);
        cache.put("6",6);
        cache.put("7",7);
        cache.put("8",8);
        cache.put("9",9);
        cache.put("10",10);
        cache.put("11",11);
        cache.put("12",12);
        cache.put("13",13);
        cache.put("14",14);
        cache.put("15",15);
        cache.put("16",16);
        cache.put("1",1);
        cache.put("12",12);
        cache.forEach((k,v) -> System.out.println("key:" + k + "value:" + v));

    }
}
